﻿//2825. 循环增长使字符串子序列等于另一个字符串
//给你一个下标从 0 开始的字符串 str1 和 str2 。
//一次操作中，你选择 str1 中的若干下标。对于选中的每一个下标 i ，你将 str1[i] 循环 递增，变成下一个字符。也就是说 'a' 变成 'b' ，'b' 变成 'c' ，以此类推，'z' 变成 'a' 。
//如果执行以上操作 至多一次 ，可以让 str2 成为 str1 的子序列，请你返回 true ，否则返回 false 。
//注意：一个字符串的子序列指的是从原字符串中删除一些（可以一个字符也不删）字符后，剩下字符按照原本先后顺序组成的新字符串。


class Solution {
public:
    char ch(char a)
    {
        if (a == 'z')
        {
            return 'a';
        }
        return a + 1;
    }

    bool canMakeSubsequence(string str1, string str2)
    {
        int i = 0, j = 0;
        for (int i = 0; i < str2.size(); i++)
        {
            while (j < str1.size() && str2[i] != str1[j] && str2[i] != ch(str1[j]))
            {
                j++;
            }
            if (j >= str1.size())
            {
                return false;
            }
            j++;
        }
        return true;
    }
};